
import pandas as pd
import re

#读取文件
dou1=pd.read_excel(r'E:\每日\抖音1.xlsx',dtype={'商品ID':str,'达人昵称':str})
dou2=pd.read_excel(r'E:\每日\抖音2.xlsx',dtype={'商品ID':str,'达人昵称':str})
dou3=pd.read_excel(r'E:\每日\抖音3.xlsx',dtype={'商品ID':str,'达人昵称':str})
dou4=pd.read_excel(r'E:\每日\抖音4.xlsx',dtype={'商品ID':str,'达人昵称':str})

#提取对应列
dou1_date=dou1.loc[:,['商品ID','商家编码','商品数量','订单应付金额','订单状态','订单提交时间','支付完成时间','售后状态','流量来源','达人昵称','流量类型','流量渠道','流量体裁','平台实际承担优惠金额','达人实际承担优惠金额']]
dou1_date['平台']='抖音1'

dou2_date=dou2.loc[:,['商品ID','商家编码','商品数量','订单应付金额','订单状态','订单提交时间','支付完成时间','售后状态','流量来源','达人昵称','流量类型','流量渠道','流量体裁','平台实际承担优惠金额','达人实际承担优惠金额']]
dou2_date['平台']='抖音2'

dou3_date=dou3.loc[:,['商品ID','商家编码','商品数量','订单应付金额','订单状态','订单提交时间','支付完成时间','售后状态','流量来源','达人昵称','流量类型','流量渠道','流量体裁','平台实际承担优惠金额','达人实际承担优惠金额']]
dou3_date['平台']='抖音3'

dou4_date=dou4.loc[:,['商品ID','商家编码','商品数量','订单应付金额','订单状态','订单提交时间','支付完成时间','售后状态','流量来源','达人昵称','流量类型','流量渠道','流量体裁','平台实际承担优惠金额','达人实际承担优惠金额']]
dou4_date['平台']='抖音4'
dou=pd.concat([dou1_date,dou2_date,dou3_date,dou4_date])

dou.columns=['商品ID','商家编码','商品数量','订单应付金额','订单状态','订单提交时间','支付完成时间','售后状态','流量来源','达人昵称','流量类型','流量渠道','流量体裁','平台实际承担优惠金额','达人实际承担优惠金额','平台']
dou['订单应付金额加优惠']=dou['订单应付金额']+dou['平台实际承担优惠金额']+dou['达人实际承担优惠金额']
dou['退款金额']=dou['订单应付金额']+dou['平台实际承担优惠金额']+dou['达人实际承担优惠金额']
date_concat=dou[(dou['达人昵称'] != '宛禾米线官方旗舰店') &(dou['达人昵称'] != '宛禾米线速食官方旗舰店')&(dou['达人昵称'] != '宛禾食品旗舰店') 
                &(dou['达人昵称'] != '宛禾食品旗舰店直播间')&(dou['达人昵称'] != '宛禾米线') &(dou['达人昵称'] != '宛禾速食官方旗舰店')&(dou['达人昵称'] != '宛禾速食旗舰店')
                &(dou['达人昵称'] != '宛禾食品')&(dou['达人昵称'] != '宛禾速食直播间')&(dou['达人昵称'] != '宛禾食品旗舰店甄选号')&(dou['达人昵称'] != '宛禾牛宅')
                &(dou['达人昵称'] != '宛禾食品旗舰店自播间') &(dou['达人昵称'] != '宛禾官方旗舰店')  &(dou['达人昵称'] != '宛禾速食')]

date_concat_1=date_concat

#['商家编码']去空格
date_concat['商家编码']=date_concat['商家编码'].str.strip()
date_concat_1['商家编码']=date_concat_1['商家编码'].str.strip()

#去掉 '商家编码' 为空的
date_concat.dropna(subset=['商家编码'], inplace=True)


#筛选发货订单，不去掉金额<=0.01,和赠品  单量，去掉退货成功的
date_concat_dl=date_concat_1[(date_concat_1['订单状态'] == '部分发货')|(date_concat_1['订单状态'] =='待发货')|(date_concat_1['订单状态'] =='待配货')|(date_concat_1['订单状态'] =='等待确认收货')|(date_concat_1['订单状态'] =='交易成功')|(date_concat_1['订单状态'] =='卖家已发货，等待买家确认')|(date_concat_1['订单状态'] =='已发货')|(date_concat_1['订单状态'] =='已发货，待签收')|(date_concat_1['订单状态'] =='已发货未签收')|(date_concat_1['订单状态'] =='已完成')|(date_concat_1['订单状态'] =='已支付')|(date_concat_1['订单状态'] =='已签收')|(date_concat_1['订单状态'] =='买家已付款，等待卖家发货')|(date_concat_1['订单状态'] =='等待出库')]
date_concat_dl=date_concat_dl[(date_concat_dl['售后状态'] != '退款成功')&(date_concat_dl['售后状态'] !='退款完成')&(date_concat_dl['售后状态'] !='已全额退款')&(date_concat_dl['售后状态'] !='(锁定)等待确认收货')&(date_concat_dl['售后状态'] !='(删除)等待出库')&(date_concat_dl['售后状态'] !='(删除)等待确认收货')&(date_concat_dl['售后状态'] !='售后完成')]
date_concat_dl=date_concat_dl[(date_concat_dl['订单应付金额'] >= 0.01)]
date_concat_dll=date_concat_dl
date_concat_dl=date_concat_dl.groupby([date_concat_dl['平台'],date_concat_dl['达人昵称'],date_concat_dl['商家编码']],as_index=False).agg(商品数量=('商品数量','sum'))
date_concat_dll=date_concat_dll.groupby([date_concat_dll['平台'],date_concat_dll['达人昵称'],date_concat_dll['商家编码']],as_index=False).agg(商品单量=('商品数量','count'))
date_concat_dll.to_excel(r'E:\每日结果\结果_待发货(单量)_达人.xlsx')
#筛选发货订单，去掉金额<=0.01,和赠品  销售额,去掉退货成功的
date_concat_s=date_concat[(date_concat['订单状态'] == '部分发货')|(date_concat['订单状态'] =='待发货')|(date_concat['订单状态'] =='待配货')|(date_concat['订单状态'] =='等待确认收货')|(date_concat['订单状态'] =='交易成功')|(date_concat['订单状态'] =='卖家已发货，等待买家确认')|(date_concat['订单状态'] =='已发货')|(date_concat['订单状态'] =='已发货，待签收')|(date_concat['订单状态'] =='已发货未签收')|(date_concat['订单状态'] =='已完成')|(date_concat['订单状态'] =='已支付')|(date_concat['订单状态'] =='已签收')|(date_concat['订单状态'] =='买家已付款，等待卖家发货')|(date_concat['订单状态'] =='等待出库')]
date_concat_ss=date_concat_s[(date_concat_s['订单应付金额'] >= 0.01)]
date_concat_sss=date_concat_ss[(date_concat_ss['商家编码'] !='抖音直播间赠品')]
date_concat_sss=date_concat_sss[(date_concat_sss['售后状态'] != '退款成功')&(date_concat_sss['售后状态'] !='退款完成')&(date_concat_sss['售后状态'] !='已全额退款')&(date_concat_sss['售后状态'] !='(锁定)等待确认收货')&(date_concat_sss['售后状态'] !='(删除)等待出库')&(date_concat_sss['售后状态'] !='(删除)等待确认收货')&(date_concat_sss['售后状态'] !='售后完成')]
#date_concat_sss.to_excel(r'E:\每日结果\结果_待发货(销售额).xlsx')
#分类汇总销售金额
result_sale=date_concat_sss.groupby([date_concat_sss['平台'],date_concat_sss['达人昵称']]).agg(订单应付金额=('订单应付金额加优惠','sum'),商品数量=('商品数量','count'))

#退款
date_concat_td=date_concat[(date_concat['售后状态'] == '退款成功')|(date_concat['售后状态'] =='退款完成')|(date_concat['售后状态'] =='已全额退款')|(date_concat['售后状态'] =='(锁定)等待确认收货')|(date_concat['售后状态'] =='(删除)等待出库')|(date_concat['售后状态'] =='(删除)等待确认收货')|(date_concat['售后状态'] =='售后完成')]
#分类汇总退款金额
result_td_sale=date_concat_td['退款金额'].groupby([date_concat_td['平台'],date_concat_td['达人昵称']]).sum()

#整合表
ress=pd.merge(result_sale,result_td_sale,on=['平台','达人昵称'],how='left')
ress.columns=['销售额','销售单量','退款金额']
ress.fillna(0,inplace=True)
ress['总销售额']=ress['销售额']+ress['退款金额']
#print(re)
ress.to_excel(r'E:\每日结果\线上销售额汇总_达人.xlsx')

#单量
xs=date_concat_dll

pp=pd.read_excel(r'G:\工作\商家编码匹配产品.xlsx')  #匹配表



#所有产品，包含组合装
#处理每行多订单情况
#分列
s_1=[] #分列后以列表形式保存
r_1=[] #添加每个分列后的产品
r_3=[] #添加商品数量
r_4=[] #添加平台
r_5=[] #添加SKU
for date_s in list(xs['商家编码']):
    if '+' in date_s :
        date_split=str(date_s).split('+')
        s_1.append(date_split[0])
    elif '，' in date_s :
        date_split=str(date_s).split('，')
        if '赠' in date_split[0]:
            date_split_1=date_split[0].split('赠')
            s_1.append(date_split_1[0])
        else:
            s_1.append(date_split[0])
        

    elif '赠' in date_s :

        date_split=str(date_s).split('赠')
        s_1.append(date_split[0])


    elif '＋' in date_s :
        date_split=str(date_s).split('＋')
        s_1.append(date_split[0]) 
    else: 
        s_1.append(date_s)

xs['主产品']=s_1
xs=xs.reset_index(drop=True)


'''
n=0
for i in list(date_concat_s['编码分裂']):
    
    
    #查i对应的索引值
    #n=list(date_concat['编码分裂']).index(i)
    #分裂后生成的是列表，所以用列表长度判定
    if len(i) == 1: #判定是否有多的订单
        r_1.append(i[0])
        r_3.append(list(date_concat_s['商品数量'])[n])
        r_4.append(list(date_concat_s['平台'])[n])
        r_5.append(list(date_concat_s['商家编码'])[n])

    else:  #多订单的情况下分行并对应单量
        for c in i :
            r_1.append(c)
            r_3.append(list(date_concat_s['商品数量'])[n])
            r_4.append(list(date_concat_s['平台'])[n])
            r_5.append(list(date_concat_s['商家编码'])[n])
         

    n+=1
s={'SKU':r_5,'商家编码':r_1,'商品数量':r_3,'平台':r_4}  #商家编码是分列后的编码
res=pd.DataFrame(s)
'''

#处理土豆粉出单
xs=xs.loc[:,['达人昵称','主产品','商品单量']]
result_hz=xs.groupby([xs['达人昵称'],xs['主产品']],as_index=False).sum()



'''
res_pp=pd.merge(result_hz,pp,on=['商家编码'],how='left')
#result_tdf=res_pp.copy()

#提取商品袋数
def d(x):   
        if '袋' in x:
            return re.findall(r"(\d+)袋",x)[-1]
        
        
        elif '桶' in x:
            return re.findall(r"(\d+)桶",x)[-1]
        elif ('个' in x):
            try:

                return re.findall(r"(\d+)个",x)[-1]
            except:
                return 1
        elif '包' in x:
            return re.findall(r"(\d+)包",x)[-1]

        elif ('只' in x):
           
            return re.findall(r"(\d+)只",x)[-1]
        else :
        
            return 0
res_pp['件数']=res_pp['商家编码'].map(d)
res_pp['件数']=res_pp['件数'].astype(int)
res_pp['件数1']=np.where(res_pp['单位']=='总',1,res_pp['件数'])
#print(result_re)
     

res_pp['总件数']=res_pp['商品数量'] * res_pp['件数1']
res_pp['总成本']=res_pp['总件数'] * res_pp['成本价']
res_pp.to_excel(r'E:\每日结果\11月.xlsx')
'''
#判定产品类别

def f(x):
    if '+' in x :
        return '其他'
    
    elif '窝子面' in x :
        return '窝子面'
    elif '火鸡面' in x :
        return '桶装火鸡面'
    elif '436g' in x :
        return '螺蛳粉土豆粉版'
    
    elif '粉面两掺' in x :
        return '粉面两掺'
    elif '133g袋装' in x or ('133g' in x) :
        return '袋装板面'
    
    elif '板面桶装' in x :
        return '桶装板面'
    elif '乐享杯' in x :
        return '乐享杯桶装'
    elif '家庭版袋装米线' in x or '家庭版' in x or  '家庭麻酱米线' in x or  '乐享版家庭' in x:
        return '家庭版麻酱米线'
    elif '欢享土豆粉' in x or '欢享版土豆粉' in x  :
        return '欢享土豆粉'
    elif '轻享版' in x :
        return '轻享土豆粉'
    elif ('乐享版刀削面' in x) or ('乐享刀削面' in x) :
        return '乐享刀削面'
    elif ('乐享版土豆粉' in x) or ('乐享土豆粉' in x)or ('286g' in x):
        return '乐享土豆粉'
    elif '荆芥土豆粉' in x :
        return '荆芥土豆粉'
    elif '荆芥麻酱米线' in x  or  ('荆芥袋装米线' in x) :
        return '荆芥米线'
    elif ('肥汁米线桶装' in x )  or  ('肥汁桶装' in x ):
        return '肥汁桶装'
    
    elif '117g肥汁' in x  or  ('肥汁米线117g' in x) :
        return '117g肥汁米线'
    elif '203g肥汁' in x  or ('肥汁米线203g' in x) :
        return '203g肥汁米线'
    elif '线下肥汁' in x  :
        return '线下肥汁米线'
    elif '80g土豆粉' in x or  ('土豆粉80g' in x):
        return '其他'
    elif '板面底料1桶' in x  or ('板面调料' in x):
        return '其他'
    elif x=='青春龙年礼盒' :
        return '经典土豆粉'
    elif ('土豆粉') in x or  ('士豆粉' in x) :
        return '经典土豆粉'
    elif '豆芽板面' in x or ('166g' in x ):
        return '豆芽板面'
    elif '板面' in x or ('146g' in x ):
        return '桶装板面'
    elif '桶' in x :
        return '石磨桶装'
    elif ('石磨' in x ) or ('经典' in x ) or ('麻酱' in x ) or ('传统' in x ) or ('青春' in x ) or ('麻辣' in x ) or ('来点尝一尝' in x ) or ('01款' in x )or ('联名' in x ):
        return  '袋装米线'
    elif '刀削面面饼' in x :
        return '其他'
    elif '刀削面' in x :
        return '刀削面'
    elif '烩面' in x :
        return '炝锅烩面'
    else :
        return '其他'




result_hz['分类']=result_hz['主产品'].map(f)
#提取件数
def m(x):
    if x=='土豆粉龙年礼盒' or   x=='青春龙年礼盒':
        return 6
    elif  x=='刀削面龙年礼盒' :
        return 3
    elif  '烩面龙年礼盒' in x :
        return 6
    
    elif ('乐享版' in x ) or  ('轻享版' in x ) :
        try:
            return re.findall(r"(\d+)袋",x)[-1]
        except :
            return 0
    elif '土豆粉' in x  or  ('士豆粉' in x) or  ('粉面两掺' in x) :
        try:
            return re.findall(r"(\d+)袋",x)[-1]
        except :
            return 0
    elif '桶' in x :
        try:
            return re.findall(r"(\d+)桶",x)[-1]
        except :
            return 0
    elif ('石磨' in x ) or ('经典' in x ) or ('麻酱' in x ) or ('传统' in x ) or ('青春' in x ) or ('麻辣' in x ) or ('来点尝一尝' in x ) or ('联名' in x ) or ('荆芥' in x )or ('袋装米线' in x ) or ('肥汁' in x ) :
        
        try:
            return  re.findall(r"(\d+)袋",x)[-1]
        except :
            return 0
    elif '01款' in x :
        return 1
    elif ('刀削面' in x)  or  ('烩面' in x ) or ('板面' in x ):
        try:
            return re.findall(r"(\d+)袋",x)[-1]
        except :
            return 0
    else :
        return 0
result_hz['件数']=result_hz['主产品'].map(m)
result_hz['件数']=result_hz['件数'].astype(int)
result_hz.to_excel(r'E:\每日结果\土豆粉出单达人.xlsx')
